package com.yiwenup.leetcode.offer;

/**
 * https://leetcode-cn.com/problems/gou-jian-cheng-ji-shu-zu-lcof/
 **/
public class No066 {
    /**
     * 执行用时：1 ms, 在所有 Java 提交中击败了100.00%的用户
     * 内存消耗：52.4 MB, 在所有 Java 提交中击败了5.03%的用户
     */
    public int[] constructArr(int[] a) {
        int length = a.length;

        if (length == 0) return new int[0];

        int[] b = new int[length];

        // 第一轮：计算a[i]左边所有数值的乘积
        b[0] = 1;
        for (int i = 1; i < length; i++) {
            b[i] = b[i - 1] * a[i - 1];
        }

        // 第二轮：计算a[i]右边所有数值的乘积，再乘左边的乘积
        int tmp = 1;
        for (int i = length - 2; i >= 0; i--) {
            tmp *= a[i + 1];
            b[i] *= tmp;
        }

        return b;
    }
}
